import { createRouter, createWebHistory, type RouteRecordRaw } from 'vue-router'

import MainLayout from '@/layouts/MainLayout.vue'

// 静态路由表
export const routes: RouteRecordRaw[] = [
  // 角色管理页
  {
    path: '/roleAdd/:id?',
    component: () => import('@/views/system/AddRole.vue'),
    meta: { hidden: true }
  },

  // 企业详情页
  {
    path: '/exterpriseDetail/:id?',
    component: () => import('@/views/park/EnterpriseDetail.vue'),
    meta: { hidden: true }
  },

  // 新增企业管理页
  {
    path: '/exterpriseAdd',
    component: () => import('@/views/park/AddEnterprise.vue'),
    meta: { hidden: true }
  },

  // 新增月卡管理页
  {
    path: '/cardAdd/:id?',
    component: () => import('@/views/car/AddCard.vue'),
    meta: { hidden: true },
  },
  {
    path: '/login',
    component: () => import('@/views/login/LoginPage.vue'),
    meta: { hidden: true },
  },
  {
    path: '/',
    redirect: '/workbench',
    meta: { hidden: true },
  },
  {
    path: '/workbench',
    component: MainLayout,
    children: [
      {
        path: '',
        component: () => import('@/views/workbench/WorkbenchPage.vue'),
        meta: { title: '工作台', icon: 'workbench' },
      },
    ],
  },
  //404 页面 
  {
    path: '/:pathMatch(.*)*',
    component: () => import('@/views/NotFound.vue'),
    meta: { hidden: true },
  },
]

const router = createRouter({
  history: createWebHistory(import.meta.env.BASE_URL),
  scrollBehavior: () => ({ top: 0 }),
  routes,
})


/**
 * 重置路由
 * 
 * 此函数遍历当前所有的路由，并移除它们它主要用于在需要清理当前所有路由并重新开始时调用
 * 它通过检查路由的名称是否存在，并确认该路由确实存在后，将其从路由列表中移除
 */
export const resetRouter = () => {
  // 获取当前所有的路由
  router.getRoutes().forEach(route => {
    // 获取路由的名称
    const { name } = route;
    // 检查路由名称是否存在，并确认该路由确实存在
    if (name && router.hasRoute(name)) {
      // 移除路由
      router.removeRoute(name);
    }
  });
}


export default router
